package com.it.entity.adjustment;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 保险金额理算表（立案后计算赔付金额）
 * </p>
 *
 * @author lutao
 * @since 2025年09月23日
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("ai_claim_calculation")
public class AiClaimCalculation implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 理算唯一ID（编码规则：CALC+日期+6位序列号）
     */
    @TableId(value = "calculation_id", type = IdType.AUTO)
    private String calculationId;
    /**
     * 报案号ID
     */
    @TableField("report_no")
    private String reportNo;
    /**
     * 关联立案ID（关联立案信息表）
     */
    @TableField("registration_id")
    private String registrationId;

    /**
     * 关联保单编号
     */
    @TableField("policy_id")
    private String policyId;

    /**
     * 关联投保人ID
     */
    @TableField("insured_id")
    private String insuredId;

    /**
     * 理算员ID（关联工作人员表）
     */
    @TableField("calculator_id")
    private String calculatorId;

    /**
     * 理算时间
     */
    @TableField("calculation_time")
    private LocalDateTime calculationTime;

    /**
     * 保单总保额（取自投保单表）
     */
    @TableField("sum_insured")
    private BigDecimal sumInsured;

    /**
     * 核定损失率（%，如80.00表示损失程度80%）
     */
    @TableField("loss_rate")
    private BigDecimal lossRate;

    /**
     * 核定损失金额（=保额×损失率）
     */
    @TableField("loss_amount")
    private BigDecimal lossAmount;

    /**
     * 理算依据（如保单条款第5条、农业保险条例第X款）
     */
    @TableField("calculation_basis")
    private String calculationBasis;

    /**
     * 理算备注（如特殊情况说明）
     */
    @TableField("calculation_remark")
    private String calculationRemark;

    /**
     * 理算状态（1-已理算，2-已复核，3-已驳回）
     */
    @TableField("calculation_status")
    private Integer calculationStatus;


}
